package com.xjy.system.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xjy.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;


/**
 * 个人借款信息视图对象 sys_loan
 *
 * @author xjy
 * @date 2022-02-10
 */
@Data
@ApiModel("个人借款信息视图对象")
public class SysLoanVo {

	private static final long serialVersionUID = 1L;

	/**
	 * 项目名称
	 */
	@Excel(name = "项目名称")
	@ApiModelProperty("项目名称")
	private String projName;

	/**
	 * 合同名称
	 */
	@Excel(name = "合同名称")
	@ApiModelProperty("合同名称")
	private String contractName;

	/**
	 * 结算项目名称
	 */
	@Excel(name = "结算项目")
	@ApiModelProperty("结算项目")
	private String resultContractName;
	/**
	 * 个人借款支付单据编号
	 */
	@Excel(name = "单据编号")
	@ApiModelProperty("单据编号")
	private String resultContractNo;

	@Excel(name = "个人借款冲销单据编号")
	@ApiModelProperty("个人借款冲销单据编号")
	private String resultContractNoCharge;

	/**
	 * 借款人:对内借款，借款人从内部人员中取
	 */
	@Excel(name = "收取方")
	@ApiModelProperty("收取方")
	private String borrower;
	/**
	 * 个人借款类别：0：支付借款，1：归还借款
	 */
	@Excel(name = "借款类别", readConverterExp = "0=支付借款,1=归还借款,")
	@ApiModelProperty("借款类别")
	private Integer loanType;

	/**
	 * 个人借款发生金额
	 */
	@Excel(name = "发生金额(元)")
	@ApiModelProperty("发生金额(元)")
	private BigDecimal amount;
	/**
	 * 个人借款发生日期
	 */
	@ApiModelProperty("发生日期")
	@Excel(name = "发生日期")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date createTime;


	/**
	 * 支付方式0：现金，1：银行（默认：银行)
	 */
	@Excel(name = "收付方式", readConverterExp = "0=现金,1=银行")
	@ApiModelProperty("支付方式")
	private Integer payType;
	/**
	 * 支付账户名称
	 */
	@Excel(name = "账户名称")
	@ApiModelProperty("账户名称")
	private String payAccountName;


	/**
	 * 支付账户开户行
	 */
	@Excel(name = "账户开户行")
	@ApiModelProperty("账户开户行")
	private String payAccountBank;

	/**
	 * 支付账户号码
	 */
	@Excel(name = "账户号码")
	@ApiModelProperty("账户号码")
	private String payAccountNo;
	/**
	 * 对方银行账户名称
	 */
	@Excel(name = "对方账户名称")
	@ApiModelProperty("对方账户名称")
	private String colBankName;


	/**
	 * 对方银行账户开户行
	 */
	@Excel(name = "对方账户开户行")
	@ApiModelProperty("对方账户开户行")
	private String colBank;

	/**
	 * 对方银行账户号码
	 */
	@Excel(name = "对方账户号码")
	@ApiModelProperty("对方账户号码")
	private String colBankNo;

	/**
	 * 冲销状态0：未冲销；1：已冲销
	 */
	@Excel(name = "冲销状态", readConverterExp = "0=未冲销,1=已冲销")
	@ApiModelProperty("冲销状态")
	private Integer writeoffStatus;

	/**
	 * 备注
	 */
	@Excel(name = "备注")
	@ApiModelProperty("备注")
	private String remark;

	/**
	 * 审核状态 0：未审核（默认）；1：审核
	 */
	@Excel(name = "审核状态", readConverterExp = "false=未审核,true=已审核,")
	@ApiModelProperty("审核状态 0：未审核（默认）；1：审核")
	private Boolean auditStatus;

	/**
	 * 个人借款ID
	 */
	@ApiModelProperty("个人借款ID")
	private Long id;

	/**
	 * 项目ID
	 */
	@ApiModelProperty("项目ID")
	private Long projId;


	/**
	 * 合同ID
	 */
	@ApiModelProperty("合同ID")
	private Long contractId;


	/**
	 * 结算项目ID
	 */
	@ApiModelProperty("结算项目ID")
	private Long resultContractId;

	@ApiModelProperty("预算科目ID")
	private Long budgetId;

	/**
	 * 科目名称
	 */
	@ApiModelProperty("科目名称")
	private String budgetName;


	/**
	 * 个人借款归还单据编号
	 */
	@ApiModelProperty("个人借款归还单据编号")
	private String resultContractNoBack;


	/**
	 * 借款人id：关联个人ID支持费用报销的联查预付款~
	 */
	@ApiModelProperty("借款人id：关联个人ID支持费用报销的联查预付款~")
	private Long borrowerId;

	/**
	 * 个人借款事由摘要
	 */
	@ApiModelProperty("个人借款事由摘要")
	private String abstracted;


	/**
	 * 支付之后进行冲抵/归还操作，剩余的金额
	 */
	@ApiModelProperty("支付之后进行冲抵/归还操作，剩余的金额")
	private BigDecimal balance;


	/**
	 * 经办人
	 */
	@ApiModelProperty("经办人")
	private String handler;

	/**
	 * 经办人id
	 */
	@ApiModelProperty("经办人id")
	private Long handlerId;


	/**
	 * 支付账户账户ID
	 */
	@ApiModelProperty("支付账户账户ID")
	private Long payAccountId;


	/**
	 * 票据影像名称
	 */
	@ApiModelProperty("票据影像名称")
	private String imageName;

	/**
	 * 票据影像：存文件路径
	 */
	@ApiModelProperty("票据影像：存文件路径")
	private String image;


	/**
	 * 上传时间
	 */
	@ApiModelProperty("上传时间")
	private Date uploadTime;


	/**
	 * 预留字段1
	 */
	@ApiModelProperty("预留字段1")
	private String reserveOne;

	/**
	 * 预留字段2
	 */
	@ApiModelProperty("预留字段2")
	private String reserveTwo;

	/**
	 * 预留字段3
	 */
	@ApiModelProperty("预留字段3")
	private String reserveThree;


}
